package SuanFa;

import java.util.Scanner;

/**
 * Created by asd73 on 2017/8/27.
 */
public class Test4 {
    public static void main(String[] args) {
        System.out.println("please input the num");
        Scanner scanner = new Scanner(System.in);
        String num = scanner.nextLine();
        boolean b =num.matches("[0-9]+");
        if (b){
            int n = Integer.parseInt(num);
            int k =2;
            System.out.print(n+"=");
            while (k<=n){
                if (k == n){
                    System.out.println(n);
                    break;
                }else if (n%k ==0){
                    System.out.print(k+"*");
                    n=n/k;
                }else {
                    k++;
                }
            }
        }
    }
}

/**
 * 题目：利用条件运算符的嵌套来完成此题：学习成绩> =90分的同学用A表示，60-89分之间的用B表示，60分以下的用C表示。
 */
class Test5{

    public static void main(String[] args) {
        int num ;
        char grade;
        System.out.println("Input score:");
        Scanner s = new Scanner(System.in);
        num = s.nextInt();
        grade = num >= 90 ? 'A' :num >= 60 ? 'B' :'C';
        System.out.println(grade);
    }
}

/**
 * 利用辗转相除法求解两个正整数的最大公约数

 在循环中，只要除数不等于0，用较大的数除以较小的数，将小的一个数作为下一轮循环的大数，取得的余数作为下一轮循环较小的数，如此循环直到较小的数值为0，返回较大的数。即为最大公约数。
 辗转相除法（欧几里得算法）

 定理：两个整数的最大公约数等于其中较小的那个数和两数的相除余数的最大公约数。最大公约数（greatest common divisor）缩写为gcd。
 最小公倍数

 最小公倍数 = (a * b)/最大公约数
 */
class Max_Min {
    public static void main(String[]args){
        Scanner scanner = new Scanner(System.in);
        System.out.println("Input first num");
        int a = scanner.nextInt();
        Scanner scanner1 = new Scanner(System.in);
        System.out.println("Input second num");
        int b = scanner1.nextInt();
        Max_Min(a,b);
    }
    public static void Max_Min(int a,int b){
        int a1 = a,b1=b;
        int x=0,y=0;
        if (a<b){
            x=a;
            a=b;
            b=x;
        }
        while(b!=0){
            y=a%b;
            a=b;
            b=y;
        }
        int t = (a1*b1)/a;
        System.out.println("max num is:"+a);
        System.out.println("min num is:"+t);
    }

}

/**
 * 题目：输入一行字符，分别统计出其中英文字母、空格、数字和其它字符的个数。
 */
class Test6{
    public static void main(String[] args) {
        int digital =0,charecter =0,blank =0,other =0;
        char[] ch =null;
        Scanner scanner = new Scanner(System.in);
        System.out.println("Input any please:");
        String s = scanner.nextLine();
        ch = s.toCharArray();
        for (int i=0;i<ch.length;i++){
            if (ch[i]>'0'&&ch[i]<'9'){
                digital++;
            }else if (ch[i]>='a'&&ch[i]<='z'){
                charecter++;
            }else if (ch[i]==' '){
                blank++;
            }else {
                other++;
            }
        }
        System.out.println("total num is:"+digital);
        System.out.println("total char is:"+charecter);
        System.out.println("total blank is:"+blank);
        System.out.println("total other is:"+other);
    }
}

/**
 * 题目：求s=a+aa+aaa+aaaa+aa...a的值，其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加)，几个数相加有键盘控制。
 */
class Test7{
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("Input witch num you want to sum");
        int a = s.nextInt();
        Scanner s1 = new Scanner(System.in);
        System.out.println("Input sum time");
        int a1 = s1.nextInt();
        int a3 =0,sum = 0;
        for (int i=0;i<a1;i++){
            a3 = a3+a;
            sum = sum +a3;
            a = a*10;
        }
        System.out.println("total is:"+sum);

    }
}

/**
 * 题目：一个数如果恰好等于它的因子之和，这个数就称为 "完数 "。例如6=1＋2＋3.编程     找出1000以内的所有完数。
 */
class Test8{
    public static void main(String[] args) {
        System.out.println("1 - 1000 wan shu :");
        for (int i=1;i<1000;i++){
            int t =0;
            for (int j=1;j<i;j++){
                if (i%j==0){
                    t=t+j;
                }
            }
            if (t==i){
                System.out.println(i+" ");
            }
        }
    }
}

class Test9{
    public static void main(String[] args) {
        double x=0,y=0;
        Scanner input =new Scanner (System.in);//导入扫描器
        System.out.print ("输入当月利润");
        x = input.nextDouble();
        if (x<=100000){
            y = x*0.1;
        }else if (x<=200000){
            y=10000+x*0.075;
        }else if (x<=400000){
            y=17500+x*0.05;
        }else if (x<=600000){
            y=x*0.03;
        }else if (x<=1000000){
            y=x*0.015;
        } else{
            y=x*0.01;
        }
        System.out.println("应发的奖金是"+y);
    }

}

/**
 * 题目：一球从100米高度自由落下，每次落地后反跳回原高度的一半；再落下，求它在第10次落地时，共经过多少米？第10次反弹多高？
 */
class Test10{
    public static void main(String[] args) {
        double d = 0;
        double h= 100;
        for (int i=1;i<=10;i++){
            d=d+h;
            h=h/2;
        }
        System.out.println("d="+d);
        System.out.println("h="+h);
    }
}


